package com.member.shop.mapper;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.member.shop.domain.SysBizUser;
import com.member.shop.dto.DevelopUserP2Dto;
import com.member.shop.dto.OverviewDto;
import com.member.shop.vo.DevelopUserP2Vo;
import com.member.shop.vo.SysBizUserExportVo;
import com.member.shop.vo.SysBizUserVerifyVo;
import com.member.shop.vo.SysBizUserVo;
import org.apache.ibatis.annotations.Param;

import java.math.BigDecimal;
import java.util.List;

/**
 * 管理员列表Mapper接口
 *
 * @author lixinchen
 * @date 2024-12-28
 */
public interface SysBizUserMapper extends BaseMapper<SysBizUser> {
    /**
     * 查询管理员列表
     *
     * @param id 管理员列表主键
     * @return 管理员列表
     */
    public SysBizUser selectSysBizUserById(Long id);

    /**
     * 查询管理员列表列表
     *
     * @param sysBizUser 管理员列表
     * @return 管理员列表集合
     */
    public List<SysBizUser> selectSysBizUserList(SysBizUser sysBizUser);

    /**
     * 新增管理员列表
     *
     * @param sysBizUser 管理员列表
     * @return 结果
     */
    public int insertSysBizUser(SysBizUser sysBizUser);

    /**
     * 修改管理员列表
     *
     * @param sysBizUser 管理员列表
     * @return 结果
     */
    public int updateSysBizUser(SysBizUser sysBizUser);

    /**
     * 删除管理员列表
     *
     * @param id 管理员列表主键
     * @return 结果
     */
    public int deleteSysBizUserById(Long id);

    /**
     * 批量删除管理员列表
     *
     * @param ids 需要删除的数据主键集合
     * @return 结果
     */
    public int deleteSysBizUserByIds(Long[] ids);

    /**
     * 查询管理员列表
     *
     * @param sysBizUser 用户列表
     * @return 用户列表集合
     */
    List<SysBizUser> selectSysBizUserAdminList(SysBizUser sysBizUser);

    /**
     * 查询用户审核列表
     *
     * @param sysBizUser 用户列表
     * @return 用户列表集合
     */
    List<SysBizUser> selectSysBizUserProcessList(SysBizUser sysBizUser);

    /**
     * 查询用户列表(全部)
     *
     * @param sysBizUser 用户列表
     * @return 结果
     */
    List<SysBizUserVo> selectSysBizUserListAll(SysBizUser sysBizUser);

    /**
     * 查询用户列表(Child全部)
     *
     * @param sysBizUser 用户列表
     * @return 结果
     */
    List<SysBizUserVo> listChild(SysBizUser sysBizUser);

    /**
     * 查询会员团队核实列表
     *
     * @param sysBizUser 会员团队核实列表
     * @return 结果
     */
    List<SysBizUserVerifyVo> listVerify(SysBizUser sysBizUser);


    /**
     * 查询用户列列表(上下级关系树)
     *
     * @param sysBizUser 用户列表
     * @return 结果
     */
    List<SysBizUserVo> upLowerLevel(SysBizUser sysBizUser);

    /**
     * 上级人数
     */
    Long upLevel(Long id);

    /**
     * 下级人数
     */
    Long downLevel(Long id);


    /**
     * 上级数组
     */
    List<Long> upList(Long id);

    // 验证手机号是否存在
    int hasUserPhone(String userPhone);

    //招商会员数
    Integer temberCount(OverviewDto overviewDto);

    // 累计余额总数
    BigDecimal totalBalance(OverviewDto overviewDto);

    void updateMemberInfoByNull(Long userId);

    List<SysBizUserExportVo> selectSysBizUserListExportAll(SysBizUser sysBizUser);

    void updateParentId(Long id);

    void updateBizId(Long id);

    List<DevelopUserP2Vo> queryDevelopUserP2(@Param("developUserP2Dto") DevelopUserP2Dto developUserP2Dto, @Param("level") Integer level, @Param("userId") Long userId);

    void updateParentUserId(Long id);

    List<SysBizUser> listUserSales(SysBizUser sysBizUser);
}
